package Controleur;

import java.util.ArrayList;

import org.openstreetmap.gui.jmapviewer.MapMarkerDot;
import org.openstreetmap.gui.jmapviewer.interfaces.MapMarker;

import DAO.DAOClient;
import DAO.DAOLocation;
import DAO.DAOStation;
import Modele.Client;
import Modele.Location;
import Modele.Station;

/**
 * Classe de chargement des sources des objets graphiques, utilisant la classe
 * Object pour conserver le modèle MVC
 * 
 */
public class LoadSource {

	/**
	 * Renvoie la liste des clients
	 * 
	 * @return La liste des clients
	 */
	public static ArrayList<Object> getClients() {

		ArrayList<Object> res = new ArrayList<Object>();

		for (Client c : DAOClient.getAllClient()) {
			res.add((Object) c);
		}

		return res;
	}

	/**
	 * Renvoie la liste des stations
	 * 
	 * @return La liste des stations
	 */
	public static ArrayList<Object> getStations() {

		ArrayList<Object> res = new ArrayList<Object>();

		for (Station s : DAOStation.getAllStation()) {
			res.add((Object) s);
		}

		return res;
	}

	/**
	 * Renvoie la liste des MapMarker
	 * 
	 * @return La liste des MapMarker
	 */
	public static ArrayList<MapMarker> getMapMarkerStations() {

		ArrayList<MapMarker> markers = new ArrayList<MapMarker>();

		for (Station s : DAOStation.getAllStation()) {
			System.out.println(s.getCoordX());
			markers.add(new MapMarkerDot(s.getCoordX(), s.getCoordY(), s
					.getIdStation()));
		}

		return markers;
	}

	/**
	 * Renvoie le tableau à deux dimensions pour l'affichage de l'historique des
	 * locations
	 * 
	 * @return Le tableau des locations
	 */
	public static String[][] getLocations() {
		ArrayList<Location> listLocation = DAOLocation.getAllLocation();

		String[][] obj = new String[listLocation.size()][6];
		for (int j = 0; j < listLocation.size(); j++) {
			Client c = listLocation.get(j).getClient();
			obj[j][0] = c.getNom();
			obj[j][1] = c.getPrenom();
			obj[j][2] = listLocation.get(j).getStationDebut().getIntitule();
			if (listLocation.get(j).getStationFin() != null)
				obj[j][3] = listLocation.get(j).getStationFin().getIntitule();
			else
				obj[j][3] = "-";
			obj[j][4] = listLocation.get(j).getDateDeDebut().toString();

			if (listLocation.get(j).getDateDeFin() != null)
				obj[j][5] = listLocation.get(j).getDateDeFin().toString();
			else
				obj[j][5] = "-";
		}
		return obj;
	}

}
